package com.order.dao;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;

import com.order.domain.Customer;

/**
 * 学生的持久层接口
 * @author zhy
 *
 */
public interface ICustomerDao {
	
	/**
	 * 查询学生列表
	 * @param dCriteria
	 * @return
	 */
	List<Customer> findAll(DetachedCriteria dCriteria);

	/**
	 * 通过所属教师ID查询学生列表
	 * @param affiliatedTeacher
	 * @return
	 */
	//List<Customer> findAllById(Integer affiliatedTeacher);
	//List<Customer> findAllById();
	
	/**
	 * 保存学生
	 * @param customer
	 */
	void save(Customer customer);
	
	/**
	 * 删除学生
	 * @param studentId
	 */
	void delete(Integer studentId);
	
	/**
	 * 根据id查询学生
	 * @param studentId
	 * @return
	 */
	Customer findById(Integer studentId);
	
	/**
	 * 更新学生信息
	 * @param customer
	 */
	void update(Customer customer);

	/**
	 * 查询总记录数（今日还未联系人数） 
	 * @param dCriteria
	 * @return
	 */
	int findRecord(DetachedCriteria dCriteria);

	/**
	 * 查询分页数据
	 * @param dCriteria
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	List<Customer> findData(DetachedCriteria dCriteria, int startIndex, int pageSize);

	/**
	 * 拉出公海
	 * @param studentId
	 * @param id
	 */
	void updatePull(Integer studentId);

	/**
	 * 查询学生数量
	 * @param dCriteria
	 * @return
	 */
	Integer findStudentNum(DetachedCriteria dCriteria);

	/**
	 * 拉入公海
	 * @param studentId
	 */
	void updatePut(Integer studentId);

	/**
	 * checkTnum
	 * @param checkTnum
	 */
	void deleteAll(int checkTnum);

	/**
	 * 查询每个员工未联系学生人数
	 * @param ddCriteria
	 * @return
	 */
	int findContactNum(DetachedCriteria ddCriteria);

	/**
	 * 删除员工时，所属学生全部归为“公海”
	 * @param studentId
	 */
	void updateAffiliatedTeache(Integer studentId);

}
